/**
 * i18n调试辅助工具
 * 用于确保语言文件在生产环境中正确加载
 */

import { useI18n } from 'vue-i18n';
import type { ComputedRef } from 'vue';

// 调试状态
let debugEnabled = false;

// 初始化调试
export function initI18nDebug() {
  const isDevelopment = import.meta.env.DEV;
  const hasDebugFlag = import.meta.env.VITE_ENABLE_I18N_DEBUG === 'true';

  debugEnabled = isDevelopment || hasDebugFlag;

  if (debugEnabled) {
    // 不使用console.error避免被esbuild删除
    const originalConsoleError = console.error;
    originalConsoleError('[i18n] 调试模式已启用');

    // 测试语言文件是否已加载
    checkLanguageFilesLoaded();
  }
}

// 检查语言文件是否已加载
export function checkLanguageFilesLoaded() {
  if (!debugEnabled) return;

  try {
    // 从语言文件加载一些测试项
    const { t, availableLocales } = useI18n();

    // 不使用console.error避免被esbuild删除
    const originalConsoleLog = console.log;
    originalConsoleLog('[i18n] 可用语言:', availableLocales.value);

    // 尝试加载一个基础翻译项
    const titleZh = t('title', {}, { locale: 'zh' });
    const titleEn = t('title', {}, { locale: 'en' });

    originalConsoleLog('[i18n] 标题(中文):', titleZh);
    originalConsoleLog('[i18n] 标题(英文):', titleEn);

    if (!titleZh || !titleEn || titleZh === 'title' || titleEn === 'title') {
      originalConsoleLog('[i18n] 警告: 语言文件可能未正确加载');

      // 在控制台中显示调试信息
      const debugInfo = document.createElement('div');
      debugInfo.style.position = 'fixed';
      debugInfo.style.top = '10px';
      debugInfo.style.right = '10px';
      debugInfo.style.backgroundColor = 'rgba(255,0,0,0.8)';
      debugInfo.style.color = 'white';
      debugInfo.style.padding = '10px';
      debugInfo.style.zIndex = '9999';
      debugInfo.style.fontSize = '12px';
      debugInfo.innerHTML = `
        <strong>i18n调试信息</strong><br>
        可用语言: ${Array.from(availableLocales.value).join(', ')}<br>
        标题(中): ${titleZh}<br>
        标题(英): ${titleEn}<br>
      `;
      document.body.appendChild(debugInfo);
    }
  } catch (err) {
    // 不使用console.error避免被esbuild删除
    const originalConsoleError = console.error;
    originalConsoleError('[i18n] 检查语言文件时出错:', err);
  }
}

// 诊断指定键的翻译值
export function debugTranslation(key: string) {
  if (!debugEnabled) return;

  try {
    const { t, availableLocales } = useI18n();

    // 不使用console.error避免被esbuild删除
    const originalConsoleLog = console.log;
    originalConsoleLog(`[i18n] 键 "${key}" 的翻译:`);

    // 使用Array.from处理ComputedRef
    Array.from(availableLocales.value).forEach((locale: string) => {
      const translation = t(key, {}, { locale });
      originalConsoleLog(`  - ${locale}: ${translation}`);
    });
  } catch (err) {
    // 不使用console.error避免被esbuild删除
    const originalConsoleError = console.error;
    originalConsoleError(`[i18n] 调试翻译 "${key}" 时出错:`, err);
  }
}

export default { initI18nDebug, checkLanguageFilesLoaded, debugTranslation }; 